home *** CD-ROM | disk | FTP | other *** search
- package javax.swing.text;
-
- import java.awt.Color;
- import java.awt.Graphics;
- import java.awt.Insets;
- import java.awt.Rectangle;
- import java.awt.Shape;
- import java.util.Vector;
- import javax.swing.plaf.TextUI;
-
- public class DefaultHighlighter extends LayeredHighlighter {
- private Vector highlights = new Vector();
- private JTextComponent component;
- private boolean drawsLayeredHighlights = true;
- public static LayeredHighlighter.LayerPainter DefaultPainter = new DefaultHighlightPainter((Color)null);
-
- public Object addHighlight(int var1, int var2, Highlighter.HighlightPainter var3) throws BadLocationException {
- Document var4 = this.component.getDocument();
- TextUI var5 = this.component.getUI();
- Object var6 = this.getDrawsLayeredHighlights() && var3 instanceof LayeredHighlighter.LayerPainter ? new LayeredHighlightInfo(this) : new HighlightInfo(this);
- ((HighlightInfo)var6).painter = var3;
- ((HighlightInfo)var6).p0 = var4.createPosition(var1);
- ((HighlightInfo)var6).p1 = var4.createPosition(var2);
- this.highlights.addElement(var6);
- var5.damageRange(this.component, var1, var2);
- return var6;
- }
-
- public void changeHighlight(Object var1, int var2, int var3) throws BadLocationException {
- Document var4 = this.component.getDocument();
- TextUI var5 = this.component.getUI();
- if (var1 instanceof LayeredHighlightInfo) {
- LayeredHighlightInfo var6 = (LayeredHighlightInfo)var1;
- if (var6.width > 0 && var6.height > 0) {
- this.component.repaint(var6.x, var6.y, var6.width, var6.height);
- }
-
- var6.width = var6.height = 0;
- var6.p0 = var4.createPosition(var2);
- var6.p1 = var4.createPosition(var3);
- var5.damageRange(this.component, Math.min(var2, var3), Math.max(var2, var3));
- } else {
- HighlightInfo var9 = (HighlightInfo)var1;
- int var7 = var9.p0.getOffset();
- int var8 = var9.p1.getOffset();
- if (var2 == var7) {
- var5.damageRange(this.component, Math.min(var8, var3), Math.max(var8, var3));
- } else if (var3 == var8) {
- var5.damageRange(this.component, Math.min(var2, var7), Math.max(var2, var7));
- } else {
- var5.damageRange(this.component, var7, var8);
- var5.damageRange(this.component, var2, var3);
- }
-
- var9.p0 = var4.createPosition(var2);
- var9.p1 = var4.createPosition(var3);
- }
-
- }
-
- public void deinstall(JTextComponent var1) {
- this.component = null;
- }
-
- public boolean getDrawsLayeredHighlights() {
- return this.drawsLayeredHighlights;
- }
-
- public Highlighter.Highlight[] getHighlights() {
- Highlighter.Highlight[] var1 = new Highlighter.Highlight[this.highlights.size()];
- this.highlights.copyInto(var1);
- return var1;
- }
-
- public void install(JTextComponent var1) {
- this.component = var1;
- this.removeAllHighlights();
- }
-
- public void paint(Graphics var1) {
- Rectangle var2 = new Rectangle(this.component.getSize());
- Insets var3 = this.component.getInsets();
- var2.x += var3.left;
- var2.y += var3.top;
- var2.width -= var3.left + var3.right;
- var2.height -= var3.top + var3.bottom;
- int var4 = this.highlights.size();
-
- for(int var5 = 0; var5 < var4; ++var5) {
- HighlightInfo var6 = (HighlightInfo)this.highlights.elementAt(var5);
- if (!(var6 instanceof LayeredHighlightInfo)) {
- Highlighter.HighlightPainter var7 = var6.getPainter();
- var7.paint(var1, var6.getStartOffset(), var6.getEndOffset(), var2, this.component);
- }
- }
-
- }
-
- public void paintLayeredHighlights(Graphics var1, int var2, int var3, Shape var4, JTextComponent var5, View var6) {
- for(int var7 = this.highlights.size() - 1; var7 >= 0; --var7) {
- Object var8 = this.highlights.elementAt(var7);
- if (var8 instanceof LayeredHighlightInfo) {
- LayeredHighlightInfo var9 = (LayeredHighlightInfo)var8;
- int var10 = ((HighlightInfo)var9).getStartOffset();
- int var11 = ((HighlightInfo)var9).getEndOffset();
- if (var2 < var10 && var3 > var10 || var2 >= var10 && var2 < var11) {
- var9.paintLayeredHighlights(var1, var2, var3, var4, var5, var6);
- }
- }
- }
-
- }
-
- public void removeAllHighlights() {
- TextUI var1 = this.component.getUI();
- if (this.getDrawsLayeredHighlights()) {
- int var2 = this.highlights.size();
- if (var2 != 0) {
- int var3 = 0;
- int var4 = 0;
- int var5 = 0;
- int var6 = 0;
-
- for(int var7 = 0; var7 < var2; ++var7) {
- LayeredHighlightInfo var8 = (LayeredHighlightInfo)this.highlights.elementAt(var7);
- var3 = Math.min(var3, var8.x);
- var4 = Math.min(var4, var8.y);
- var5 = Math.max(var5, var8.x + var8.width);
- var6 = Math.max(var6, var8.y + var8.height);
- }
-
- if (var3 != var5 && var4 != var6) {
- this.component.repaint(var3, var4, var5 - var3, var6 - var4);
- }
-
- this.highlights.removeAllElements();
- }
- } else if (var1 != null) {
- int var9 = this.highlights.size();
- if (var9 != 0) {
- int var10 = Integer.MAX_VALUE;
- int var11 = 0;
-
- for(int var12 = 0; var12 < var9; ++var12) {
- HighlightInfo var13 = (HighlightInfo)this.highlights.elementAt(var12);
- var10 = Math.min(var10, var13.p0.getOffset());
- var11 = Math.max(var11, var13.p1.getOffset());
- }
-
- var1.damageRange(this.component, var10, var11);
- this.highlights.removeAllElements();
- }
- }
-
- }
-
- public void removeHighlight(Object var1) {
- if (var1 instanceof LayeredHighlightInfo) {
- LayeredHighlightInfo var2 = (LayeredHighlightInfo)var1;
- if (var2.width > 0 && var2.height > 0) {
- this.component.repaint(var2.x, var2.y, var2.width, var2.height);
- }
- } else {
- TextUI var4 = this.component.getUI();
- HighlightInfo var3 = (HighlightInfo)var1;
- var4.damageRange(this.component, var3.p0.getOffset(), var3.p1.getOffset());
- }
-
- this.highlights.removeElement(var1);
- }
-
- public void setDrawsLayeredHighlights(boolean var1) {
- this.drawsLayeredHighlights = var1;
- }
- }
-